package Day019_Junit单元测试_NIO.demo2_NIO;

/**
 * @author zhangyan
 * @date 2020/5/12 10:04
 */
/*
    IO和NIO的区别
    原有的 IO 是面向流的、阻塞的，NIO 则是面向块的、非阻塞的

    同步与异步（synchronous/asynchronous）：
    同步是一种可靠的有序运行机制，当我们进行同步操作时，后续的任务是等待当前调用返回，才会进行下一步；
    而异步则相反，其他任务不需要等待当前调用返回，通常依靠事件、回调等机制来实现任务间次序关系

    阻塞与非阻塞：在进行阻塞操作时，当前线程会处于阻塞状态，无法从事其他任务，只有当条件就绪才能继
    续，比如ServerSocket新连接建立完毕，或者数据读取、写入操作完成；而非阻塞则是不管IO操作是否结
    束，直接返回，相应操作在后台继续处理

    在Java1.4之前的I/O系统中，提供的都是面向流的I/O系统，系统一次一个字节地处理数据，一个输入流产生一个字
    节的数据，一个输出流消费一个字节的数据，面向流的I/O速度非常慢，而在Java 1.4中推出了NIO，这是一个面向
    块的I/O系统，系统以块的方式处理数据，每一个操作在一步中产生或者消费一个数据，按块处理要比按字节处理
    数据快的多。

    在 Java 7 中，NIO 有了进一步的改进，也就是 NIO 2，引入了异步非阻塞 IO 方式，也有很多人叫它
    AIO（Asynchronous IO）。异步 IO 操作基于事件和回调机制，可以简单理解为，应用操作直接返回，而不会阻塞
    在那里，当后台处理完成，操作系统会通知相应线程进行后续工作。
    NIO之所以是同步，是因为它的accept/read/write方法的内核I/O操作都会阻塞当前线程
    首先，我们要先了解一下NIO的三个主要组成部分：Buffer（缓冲区）、Channel（通道）、Selector（选择器）
 */
public class Test {
    public static void main(String[] args) {

    }
}
